package com.cx.mapper;

import java.util.List;

import com.cx.utils.page.Page;
import com.cx.utils.rps.RequestParameters;

/**
 * 
  * @ClassName(类名)      : BaseMapper
  * @Description(描述)    : 数据访问接口
  * @author(作者)         ：曹轩
  * @date (开发日期)      ：2015年9月28日 上午11:44:30
  * @param <T>
 */
public interface BaseMapper<T> {
	/**
	 * 
	 * @Description(功能描述)    :  添加数据，并返回id
	 * @author(作者)             ：  曹轩
	 * @date (开发日期)          :  2015年9月28日 上午11:45:18 
	 * @exception                : 
	 * @param entity 插入对象，不能为null
	 * @return  Long 返回id
	 */
	public Long insert(T entity);
	
	/**
	 * 
	 * @Description(功能描述)    :  修改数据
	 * @author(作者)             ：  曹轩
	 * @date (开发日期)          :  2015年9月28日 下午1:41:45 
	 * @exception                :   void 无返回值
	 */
	public void update(T entity);
	
	/**
	 * 
	 * @Description(功能描述)    :  根据Id获取单个对象
	 * @author(作者)             ：  曹轩
	 * @date (开发日期)          :  2015年9月28日 下午2:44:55 
	 * @exception                : 
	 * @param id
	 * @return  T
	 */
	public T getEntityById(String id);
	
	
	/**
	 * 
	 * @Description(功能描述)    :  根据特定条件获取指定对象
	 * @author(作者)             ：  曹轩
	 * @date (开发日期)          :  2015年10月8日 下午12:59:34 
	 * @param rps  参数集合
	 * @return  T 返回对象
	 */
	public T getEntityByWhere(RequestParameters rps);
	
	
	/**
	 * 
	 * @Description(功能描述)    :  根据id删除对象
	 * @author(作者)             ：  曹轩
	 * @date (开发日期)          :  2015年9月28日 下午2:54:40 
	 * @exception                : 
	 * @param id  void
	 */
	public void deleteById(String id);
	
	/**
	 * 
	 * @Description(功能描述)    :  通过封装的rqs查询数据集合
	 * @author(作者)             ：  曹轩
	 * @date (开发日期)          :  2015年9月28日 下午2:58:27 
	 * @param rqs
	 * @return  List<T>
	 */
	public List<T> queryListByRps(RequestParameters rps); 
	
	
	/**
	 * 
	 * @Description(功能描述)    :  分页获取对象集合
	 * @author(作者)             ：  曹轩
	 * @date (开发日期)          :  2015年9月28日 下午3:23:22 
	 * @param dto
	 * @param pageNo
	 * @param limit
	 * @return  Page<T>
	 */
	public Page<T> queryForPageByRps(RequestParameters rps, int pageNo, int limit);
}
